import $store from '@/store/index.js'
export default {
	// 全局配置
	common:{
		// 本地环境
		
		baseUrl:"http://192.168.3.45:9083/exam/mp/api",
		baseImageUrl: "http://47.122.26.96:9000/ks-exam2/",
		
	   
	    // 测试环境
		//baseUrl:"http://47.122.26.96:29083/exam/mp/api",
		//baseImageUrl: "http://47.122.26.96:9000/ks-exam2/",
		
		// 正式环境
		//baseUrl:"http://www.jsnjkgc.cn/exam/mp/api",
		//baseImageUrl: "http://www.jsnjkgc.cn/ks-exam2/",
		
		header:{
			'Content-Type':'application/json;charset=UTF-8',
		},
		data:{},
		method:'GET',
		dataType:'json'
	},
	// 请求 返回promise
	request(options = {}){
		// 组织参数
		options.url = this.common.baseUrl + options.url
		options.header = options.header || this.common.header
		options.data = options.data || this.common.data
		options.method = options.method || this.common.method
		options.dataType = options.dataType || this.common.dataType
		
		
		// 请求
		return new Promise((res,rej)=>{
			
			// 请求之前... todo
			// token
			if (options.token) {
				options.header['X-Access-Token'] = $store.state.user.token
				// 二次验证
				if (options.checkToken && !options.header.token) {
					uni.showToast({
						title: '请先登录',
						icon: 'none'
					});
					uni.navigateTo({
						url: '/pages/login',
					});
					return rej('请先登录')
				}
			}
			// 请求中...
			uni.request({
				...options,
				success: (result) => {
					// 返回原始数据
					if(options.native){
						return res(result)
					}
					// 服务端失败
					if(result.statusCode !== 200){
						if(result.statusCode == 401){
							uni.showToast({
								title: '会话过期，请重新登录',
								icon: 'none'
							});
							uni.navigateTo({
								url: "/pages/login"
							})
							setTimeout(function(){
								uni.navigateTo({
									url: "/pages/login"
								})
							}, 500);
						}else {
							if (options.toast !== false) {
								uni.showToast({
									title: result.data.msg || '服务端失败',
									icon: 'none'
								});
							}
							if(options.checkToken && result.data.msg == '非法token，请先登录！'){
								uni.navigateTo({
									url: '/pages/login/login',
								});
							}
							
						}							
						return rej(result.data) 
					}
					
					// 成功
					let data = result.data
					res(data)
				},
				fail: (error) => {
					uni.showToast({
						title: error.errMsg || '请求失败',
						icon: 'none'
					});
					return rej()
				}
			});
		})
	},
	// get请求
	get(url,data = {},options = {}){
		options.url = url
		options.data = data
		options.method = 'GET'
		return this.request(options)
	},
	// post请求
	post(url,data = {},options = {}){
		options.url = url
		options.data = data
		options.method = 'POST'
		return this.request(options)
	},
	// delete请求
	del(url,data = {},options = {}){
		options.url = url
		options.data = data
		options.method = 'DELETE'
		return this.request(options)
	},
}